#ifndef __STRUCTURE_H__
#define __STRUCTURE_H__

#include <vector>

typedef struct {
     double x, y, theta;
}Point;

typedef struct{
  Point p1;
  Point p2;
}Line;

// ラインマップの最大の直線数
#define MAX_LINEMAP_SIZE (1000)
typedef struct {
  Line data[MAX_LINEMAP_SIZE];
  int numdata;
}LineMap;

// ポイントマップの最大の点数
#define MAX_POINTMAP_SIZE (3000*2000)
typedef struct {
  Point data[MAX_POINTMAP_SIZE];
  int numdata;
} PointMap;

// 占有グリッドマップの最大サイズ
#define MAX_OCCUPANCY_GRIDMAP_SIZE (3000*2000)
typedef struct {
  int origin_x;
  int origin_y;
  int width;
  int height;
  unsigned char data[MAX_OCCUPANCY_GRIDMAP_SIZE];
  double resolution;
} OccupancyGridMap;

typedef struct{
  LineMap *lmap ;
  PointMap *pmap;
  OccupancyGridMap *ogmap;
} MapData;

#endif /* __STRUCTURE_H__ */
